package org.supda.system.service;

import java.util.List;

import org.supda.system.entity.TResources;
import org.supda.system.entity.TRole;
import org.supda.system.util.DataTablePageUtil;

/**
 * 
 * @author supda
 * @Date 2016-12-23 上午10:52:05
 *
 */
public interface RoleService {

	/**
	 * 创建角色
	 * @param role
	 * @return
	 */
	TRole createRole(TRole role);
	
	/**
	 * 删除角色
	 * @param roleId
	 */
	void deleteRole(Long roleId);
	
	/**
	 * 添加角色与权限之间的关系
	 * @param roleId
	 * @param resourceId
	 */
	void correlationResources(Long roleId , List<Long> resourceId);
	
	/**
	 * 更新角色与权限之间的关系，包括解除和添加角色和权限之间的关系
	 * @param roleId
	 * @param unResourceId
	 * @param newResourceId
	 */
	void updateRelationResources(Long roleId, List<Long> unResourceId , List<Long> newResourceId);

	/**
	 * 移除角色与权限之间的关系
	 * @param roleId
	 * @param resourceId
	 */
	void unCorrelationResources(Long roleId,List<Long> unResourceId);
	
	/**
	 * 查询出指定Id的role所拥有的所有权限
	 * @param roleId
	 */
	List<TResources> selectRoleCorrelationResources(Long roleId);
	
	/**
	 * 根据roleId查询出角色信息
	 * @param roleId
	 * @return
	 */
	TRole findByRoleId(Long roleId);

	/**
	 * 分页
	 * @param dtp
	 * @param b
	 */
	void listByDataTable(DataTablePageUtil<TRole> dtp);
	
	/**
	 * 查询出所有的角色
	 * @return
	 */
	List<TRole> findAllRole();

	/**
	 * 创建角色
	 * @param role
	 * @param resIds
	 */
	TRole createRole(TRole role, Long[] resIds);

	/**
	 * 逻辑删除
	 * @param id
	 */
	void deleteRoleLogic(Long id);

	/**
	 * 锁定与解锁
	 * @param id
	 * @return
	 */
	String locked(Long id);
}
